home *** CD-ROM | disk | FTP | other *** search
- # Various statistics functions.
- #
- # Written by Konrad Hinsen <hinsen@ibs.ibs.fr>
- # last revision: 1997-6-1
- #
-
- import Numeric
-
- #
- # Univariate statistics functions
- #
- def average(data):
- data = Numeric.array(data)
- return Numeric.add.reduce(data)/len(data)
-
- def variance(data):
- data = Numeric.array(data)
- return Numeric.add.reduce((data-average(data))**2)/(len(data)-1)
-
- def standardDeviation(data):
- data = Numeric.array(data)
- return Numeric.sqrt(variance(data))
-
- def histogram(data, nbins, range = None):
- data = Numeric.array(data, Numeric.Float)
- if range is None:
- min = Numeric.minimum.reduce(data)
- max = Numeric.maximum.reduce(data)
- else:
- min, max = range
- data = Numeric.repeat(data,
- Numeric.logical_and(Numeric.less_equal(data, max),
- Numeric.greater_equal(data,
- min)))
- bin_width = (max-min)/nbins
- data = Numeric.floor((data - min)/bin_width).astype(Numeric.Int)
- histo = Numeric.add.reduce(Numeric.equal(
- Numeric.arange(nbins)[:,Numeric.NewAxis], data), -1)
- histo[-1] = histo[-1] + Numeric.add.reduce(Numeric.equal(nbins, data))
- bins = min + bin_width*(Numeric.arange(nbins)+0.5)
- return Numeric.transpose(Numeric.array([bins, histo]))
-